package com.sfl.learn.work.module1;

/**
 * 编程题 编程找出 1000 以内的所有完数并打印出来。 所谓完数就是一个数恰好等于它的因子之和，如：6=1＋2＋3
 */
public class TwoCount {
    public static void main(String[] args) {
        for (int i = 2; i <= 1000; i++) {
            int sum = 0;
            //优化：减少循环次数 最大因子 n/2
            for (int j = 1; j <= i / 2; j++) {
                if (i % j == 0) {
                    //j 是i的因子
                    sum += j;
                }
            }
            if (i == sum) {
                //完数
                System.out.println("完数：" + i);
            }
        }
    }
}
